home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -serious- / programming / other / tandem / projects / asmfiles / test00.asm next >
Assembly Source File  |  1999-09-06  |  22KB  |  859 lines

  1. * This program must NOT be run - it is for testing only.
  2. * Before assembly, select Sundry, and set "change rel ext .L to .W" to "No"
  3. * This is a quick all-over runthrough, subject to detailed testing
  4.  
  5. * test ADD/SUB/AND/OR/EOR
  6.  
  7. * test ADD,ADDA,ADDI     ;Devpac mc (except where Devpas's errors noted)
  8.  add.w d3,d4             ;D843
  9.  add.w a2,d5             ;DA4A
  10.  add.w #$1234,d6         ;06461234
  11.  add.w d1,$1234(a5)      ;D36D1234
  12.  add.w d2,a3             ;D6C2
  13.  addi.w #$1234,d6        ;06461234
  14.  adda.w d2,a3            ;D6C2
  15.  add.w #$1234,a3         ;D6FC1234
  16.  adda.w #$1234,a3        ;D6FC1234
  17.  add.w $1234(a5),a4      ;D8ED1234
  18.  adda.w $1234(a5),a4     ;D8ED1234
  19.  add.w #$1234,$4321(a4)  ;066C12344321
  20.  addi.w #$1234,$4321(a4) ;066C12344321
  21.  
  22. * test SUB,SUBA,SUBI
  23.  sub.w d3,d4             ;9843
  24.  sub.w a2,d5             ;9A4A
  25.  sub.w #$1234,d6         ;04461234
  26.  sub.w d1,$1234(a5)      ;936D1234
  27.  sub.w d2,a3             ;96C2
  28.  subi.w #$1234,d6        ;04461234
  29.  suba.w d2,a3            ;96C2
  30.  sub.w #$1234,a3         ;96FC1234
  31.  suba.w #$1234,a3        ;96FC1234
  32.  sub.w $1234(a5),a4      ;98ED1234
  33.  suba.w $1234(a5),a4     ;98ED1234
  34.  sub.w #$1234,$4321(a4)  ;046C12344321
  35.  subi.w #$1234,$4321(a4) ;046C12344321
  36.  
  37. * test AND,ANDI
  38.  and.w d3,d4             ;C843
  39.  and.w #$1234,d6         ;02461234
  40.  and.w d1,$1234(a5)      ;C36D1234
  41.  andi.w #$1234,d6        ;02461234
  42.  and.w #$1234,$4321(a4)  ;026C12344321
  43.  andi.w #$1234,$4321(a4) ;026C12344321
  44.  and.w #$0012,CCR        ;023C0012
  45.  andi.w #$0012,CCR       ;023C0012
  46.  and.w #$1234,SR         ;027C1234
  47.  andi.w #$1234,SR        ;027C1234
  48.  
  49. * test EOR,EORI
  50.  eor.w d3,d4             ;B744
  51.  eor.w d1,$1234(a5)      ;B36D1234
  52.  eor.w #$1234,$4321(a4)  ;0A6C12344321
  53.  eori.w #$1234,$4321(a4) ;0A6C12344321
  54.  eor.w #$0012,CCR        ;0A3C0012
  55.  eori.w #$0012,CCR       ;0A3C0012
  56.  eor.w #$1234,SR         ;0A7C1234
  57.  eori.w #$1234,SR        ;0A7C1234
  58.  
  59. * test OR,ORI
  60.  or.w d3,d4              ;8843
  61.  or.w #$1234,d6          ;00461234
  62.  or.w d1,$1234(a5)       ;836D1234
  63.  or.w #$1234,$4321(a4)   ;006C12344321
  64.  ori.w #$1234,$4321(a4)  ;006C12344321
  65.  or.w #$0012,CCR         ;003C0012
  66.  ori.w #$0012,CCR        ;003C0012
  67.  or.w #$1234,SR          ;007C1234
  68.  ori.w #$1234,SR         ;007C1234
  69.  
  70. * test assembly of the syntax modes
  71.  
  72. * syntax 0
  73.  nop                    ;4E71
  74.  
  75. * syntax 1
  76.  abcd d4,d5             ;CB04
  77.  sbcd -(a3),-(a2)       ;850B
  78.  
  79. * syntax 2 (branches to 3,4)
  80.  add.b d1,(a4)          ;D314
  81.  add.b (a4),d1          ;D214
  82.  add.b d1,$64(a3)       ;D32B0064
  83.  add.b $64(a3),d1       ;D22B0064
  84.  add.b #$64,d1          ;06010064>ADDI
  85.  add.b #$64,(a3)        ;06130064>ADDI
  86.  add.b d3,d5            ;DA03
  87.  add.l d3,a2            ;D5C3>ADDA
  88.  add.l $23(a2,d4.l),a3  ;D7F24823>ADDA
  89.  add.l d5,$64(a3)       ;DBAB0064
  90.  
  91. * syntax 3
  92.  adda.l d3,a2           ;D5C3
  93.  adda.l $23(a2,d4.l),a3 ;D7F24823
  94.  
  95. * syntax 4
  96.  addi.b #$64,d1         ;06010064
  97.  addi.b #$64,(a3)       ;06130064
  98.  andi.w #$1234,10(a5)   ;026D1234000A
  99.  ori.b #$67,(a6)        ;00160067
  100.  eori.l #$12345678,D6   ;0A8612345678
  101.  
  102. * syntax 5
  103.  addq.w #1,d0           ;5240
  104.  addq.l #2,a7           ;548F
  105.  
  106. * syntax 6
  107.  addx.l d0,d1           ;D380
  108.  addx.w -(a0),-(a1)     ;D348
  109.  
  110. * syntax 7
  111.  and.w #$FFBF,d0        ;0240FFBF
  112.  and.l d0,$FF00         ;C1B8FF00/C1B90000FF00
  113.  and.w #$1234,d5        ;02451234
  114.  and.l #$12345678,-(a6) ;02A612345678
  115.  and #$12,ccr           ;023C0012
  116.  
  117. * syntax 8
  118.  andi #$12,ccr          ;023C0012
  119.  
  120. * syntax 9
  121.  ori #$1234,sr          ;007C1234
  122.  
  123. * syntax 10
  124.  asl.w #3,d4            ;E744
  125.  asr.l #2,d7            ;E487
  126.  ror.w d2,d3            ;E47B
  127.  roxl.b d1,d5           ;E335
  128.  asl 10(a3)             ;E1EB000A
  129.  lsr 2(a4,a2.w)         ;E2F4A002
  130.  
  131. * syntax 11
  132. Fred:
  133.  nop                    ;4E71
  134.  bra Fred               ;60FC
  135.  bcc *+500              ;640001F2
  136.  bcc.l *+70000          ;64FF0001116E  (See comments at start!!!)
  137.  
  138. * syntax 12
  139.  bchg d0,d1             ;0141
  140.  bchg #2,$FF00.L        ;087900020000FF00
  141.  
  142. * syntax 13
  143.  bfchg (a4){10:12}      ;EAD4028C
  144.  bfchg (a4){d2:12}      ;EAD4088C
  145.  bfchg (a4){10:d3}      ;EAD402A3
  146.  bfchg (a4){d2:d3}      ;EAD408A3
  147.  
  148. * syntax 14
  149.  bkpt #4                ;484C
  150.  
  151. * syntax 15
  152.  cas d3,d2,(a5)         ;0CD50083
  153.  
  154. * syntax 16
  155.  cas2 d3:d3,d6:d7,(a4):(d3) ;0CFCC18331C3
  156.  
  157. * syntax 17
  158.  chk.w (a4),d3          ;4794
  159.  chk.l 3(a2),d5         ;4B2A0003
  160.  
  161. * syntax 18
  162.  chk2.b -3(a5,d2.l),d2  ;00F5280028FD
  163.  chk2.w (a3),d0         ;02D30800
  164.  chk2.l 3(a0),a3        ;04E8B8000003
  165.  
  166. * syntax 19
  167.  clr.b d2               ;4202
  168.  clr.l 3(a2)            ;42AA0003
  169.  
  170. * syntax 20
  171.  cmp.b 3(a5),d2         ;B42D0003
  172.  cmp.w 3(a5),a2         ;B4ED0003
  173.  cmp.l #$12345678,d2    ;B4BC12345678
  174.  cmp.w #$1234,a3        ;B6FC1234
  175.  cmp.l (a2)+,(a3)+      ;B78A
  176.  
  177. * syntax 21
  178.  cmpi.w #$1234,d2       ;0C421234
  179.  cmpi.b #$12,(a0)       ;0C100012
  180.  cmpi.l #$123,3(a5)     ;0CAD000001230003
  181.  
  182. * syntax 22
  183.  cmpm.b (a1)+,(a2)+     ;B509
  184.  cmpm.l (a2)+,(a3)+     ;B78A
  185.  
  186. * syntax 23
  187.  cmp2.b (a3),d4         ;00D34000
  188.  cmp2.w 3(a4),a3        ;02ECB0000003
  189.  
  190. * syntax 24
  191.  dbra D1,Fred           ;51C9FF7C
  192.  dbge D7,*+20           ;5CCF0012
  193.  
  194. * syntax 25-28
  195.  divs (a4),d5           ;8BD4
  196.  divs.l (a4),d5         ;4C545805
  197.  divs.l (a4),d5:d6      ;4C546C05
  198.  divsl 2(a3),d2:d3      ;4C6B38020002
  199.  divu.w (a2),d3         ;86D2
  200.  divu.l (a2),d3         ;4C523003
  201.  divu.l (a2),d3:d4      ;4C524403
  202.  divul.l (a1),d7:d6     ;4C516007
  203.  divul.l (a1),d7:d7     ;4C517007
  204.  divu.l (a1),d3:d3      ;4C513403
  205.  
  206. * syntax 29
  207.  eor.w d5,d6            ;BB46
  208.  
  209. * syntax 30
  210.  exg d1,d2              ;C342
  211.  exg d2,d1              ;C541
  212.  exg d1,a2              ;C38A
  213.  exg a1,d2              ;C589
  214.  exg a1,a2              ;C34A/C549
  215.  exg a2,a1              ;C549/C54A
  216.  
  217. * syntax 31
  218.  ext.w d4               ;4884
  219.  ext.l d5               ;48C5
  220.  extb.l d6              ;49C6
  221.  
  222. * FPU binary operator
  223.  ftwotox.b (a4),fp1      ;F2145891
  224.  ftwotox.w (a4),fp2      ;F2145111
  225.  ftwotox.l (a4),fp3      ;F2144191
  226.  ftwotox.x (a4),fp4      ;F2144A11
  227.  ftwotox.x fp2,fp3       ;F2000991
  228.  ftwotox fp2,fp3         ;F2000991
  229.  ftwotox.x fp2,fp2       ;F2000911
  230.  ftwotox.x fp2           ;F2000911
  231.  
  232. * MOVE (& promotion to MOVEA)
  233.  move.w a0,d0          ;3008
  234.  move.b (a0),d0        ;1010
  235.  move.l #$1000,$FF00.l ;23FC000010000000FF00
  236.  move.l a0,-(a7)       ;2F08
  237.  move.w #$FFFF,a0      ;307CFFFF>MOVEA
  238.  move.l #$FFFF,a0      ;207C0000FFFF>MOVEA
  239.  movea.w #$FFFF,a0     ;307CFFFF
  240.  movea.l #$FFFF,a0     ;207C0000FFFF
  241.  move.w #0,ccr         ;44FC0000
  242.  move.w (a7)+,ccr      ;44DF
  243.  move.w ccr,D0         ;42C0
  244.  move.w ccr,-(a7)      ;42E7
  245.  move.w sr,$FF00.l     ;40F90000FF00
  246.  move.w sr,-(a7)       ;40E7
  247.  move.w #$2700,sr      ;46FC2700
  248.  move.w (a7)+,sr       ;46DF
  249.  move.l usp,a0         ;4E68
  250.  move.l a0,usp         ;4E60
  251.  
  252. * fmove
  253.  fmove.b (a4),fp0 ;F2145800
  254.  fmove.b (a4),fp7 ;F2145B80
  255.  fmove.b fp0,(a4) ;F2147800
  256.  fmove.b fp7,(a4) ;F2147B80
  257.  fmove.x fp0,fp0  ;F2000000
  258.  fmove.x fp0,fp7  ;F2000380
  259.  fmove.x fp7,fp0  ;F2001C00
  260.  fmove.x fp7,fp7  ;F2001F80
  261.  fmove.w (a4),fp0 ;F2145000
  262.  fmove.w fp0,(a4) ;F2147000
  263.  fmove.l fp0,(a4) ;F2146000
  264.  fmove.l fp0,(a4) ;F2146000
  265.  fmove.s fp0,(a4) ;F2146400
  266.  fmove.x fp0,(a4) ;F2146800
  267.  fmove.d fp0,(a4) ;F2147400
  268.  fmove.p fp0,(a4){D0}   ;F2147C00
  269.  fmove.p fp0,(a4){D7}   ;F2147C70
  270.  fmove.p fp0,(a4){#-64} ;F2146C40
  271.  fmove.p fp0,(a4){#63}  ;F2146C3F
  272.  fmove.x fp0,$1234(a5)  ;F22D68001234
  273.  fmove.x $1234(a5),fp0  ;F22D48001234
  274.  fmove.l (a4),fpcr      ;F2149000
  275.  fmove.l (a4),fpsr      ;F2148800
  276.  fmove.l (a4),fpiar     ;F2148400
  277.  fmove.l fpcr,(a4)      ;F214B000
  278.  fmove.l fpsr,(a4)      ;F214A800
  279.  fmove.l fpiar,(a4)     ;F214A400
  280.  fmove.x fp3,fp3        ;F2000D80
  281.  fmove.p fp0,(a4){#-64} ;F2146C40
  282.  fmove.p fp0,(a4){#63}  ;F2146C3F
  283.  
  284. * fmovem
  285.  fmovem.l fpiar,-(a7)           ;F227A400
  286.  fmovem.l (a7)+,fpiar           ;F21F8400
  287.  fmovem.l fpiar/fpsr/fpcr,-(a7) ;F227BC00
  288.  fmovem.l (a7)+,fpiar/fpsr/fpcr ;F21F9C00
  289.  fmovem.x fp3,-(a7)             ;F227E008
  290.  fmovem.x fp2/fp3,-(a7)         ;F227E00C
  291.  fmovem.x fp1-fp3/fp4-fp5,-(a7) ;F227E03E
  292.  fmovem.x (a7)+,fp3             ;F21FD010
  293.  fmovem.x (a7)+,fp2/fp3         ;F21FD030
  294.  fmovem.x (a7)+,fp1-fp3/fp4/fp5 ;F21FD07C
  295.  fmovem.x d0,-(a3)              ;F223E800
  296.  fmovem.x (a3)+,d7              ;F21BD870
  297.  
  298. * FPU unary opcode
  299.  fabs.s d2,fp2   ;F2024518
  300.  fabs.b (a5),fp1 ;F2155898
  301.  fabs.w (a5),fp1 ;F2155098
  302.  fabs.l (a5),fp1 ;F2154098
  303.  fabs.s (a5),fp1 ;F2154498
  304.  fabs.x (a5),fp1 ;F2154898
  305.  fabs.p (a5),fp1 ;F2154C98
  306.  fabs.d (a5),fp1 ;F2155498
  307.  fabs.x fp2      ;F2000918
  308.  fabs fp2,fp2    ;F2000918
  309.  fabs.x fp0,fp1  ;F2000098
  310.  fabs.x fp0,fp7  ;F2000398
  311.  fabs.x fp7,fp0  ;F2001C18
  312.  fabs.x fp7,fp6  ;F2001F18
  313.  fabs.x $1234(a3),fp4 ;F22B4A181234
  314.  facos.x (a5),fp3 ;F215499C
  315.  fasin.x (a5),fp3 ;F215498C
  316.  fatan.x (a5),fp3 ;F215498A
  317.  fatanh.x (a5),fp3 ;F215498D
  318.  fcos.x (a5),fp3  ;F215499D
  319.  fcosh.x (a5),fp3 ;F2154999
  320.  fetox.x (a5),fp3 ;F2154990
  321.  fetoxm1.x (a5),fp3 ;F2154988
  322.  fgetexp.x (a5),fp3 ;F215499E
  323.  fgetman.x (a5),fp3 ;F215499F
  324.  fint.x (a5),fp3    ;F2154981
  325.  fintrz.x (a5),fp3  ;F2154983
  326.  flog10.x (a5),fp3  ;F2154995
  327.  flog2.x (a5),fp3   ;F2154996
  328.  flogn.x (a5),fp3   ;F2154994
  329.  flognp1.x (a5),fp3 ;F2154986(Devpac gives F2154985)
  330.  fneg.x (a5),fp3    ;F215499A
  331.  ftan.x (a5),fp3    ;F215498F
  332.  ftanh.x (a5),fp3   ;F2154989
  333.  ftentox.x (a5),fp3 ;F2154992
  334.  ftwotox.x (a5),fp3 ;F2154991
  335.  fsin.x (a5),fp3    ;F215498E
  336.  fsinh.x (a5),fp3   ;F2154982
  337.  fsqrt.x (a5),fp3   ;F2154984
  338.  
  339. * FPU binary opcodes
  340.  fadd.s d2,fp2   ;F2024522
  341.  fadd.b (a5),fp1 ;F21558A2
  342.  fadd.w (a5),fp1 ;F21550A2
  343.  fadd.l (a5),fp1 ;F21540A2
  344.  fadd.s (a5),fp1 ;F21544A2
  345.  fadd.x (a5),fp1 ;F21548A2
  346.  fadd.p (a5),fp1 ;F2154CA2
  347.  fadd.d (a5),fp1 ;F21554A2
  348.  fadd.x fp2      ;F2000922
  349.  fadd fp2,fp2    ;F2000922
  350.  fadd.x fp0,fp1  ;F20000A2
  351.  fadd.x fp0,fp7  ;F20003A2
  352.  fadd.x fp7,fp0  ;F2001C22
  353.  fadd.x fp7,fp6  ;F2001F22
  354.  fadd.x $1234(a3),fp4 ;F22B4A221234
  355.  fcmp.x (a3),fp5 ;F2134AB8
  356.  fdiv.x (a3),fp5 ;F2134AA0
  357.  fmod.x (a3),fp5 ;F2134AA1
  358.  fmul.x (a3),fp5 ;F2134AA3
  359.  frem.x (a3),fp5 ;F2134AA5
  360.  fscale.x (a3),fp5 ;F2134AA6
  361.  fsgldiv.x (a3),fp5 ;F2134AA4
  362.  fsglmul.x (a3),fp5 ;F2134AA7
  363.  fsub.x (a3),fp5 ;F2134AA8
  364.  
  365. * misc FPU instructions
  366.  fsincos.w $1234(a5),fp1:fp2 ;F22D51311234
  367.  fsincos fp3,fp1:fp2 ;F2000D31
  368.  ftst.b $1234(a5)   ;F22D583A1234
  369.  ftst.p $1234(a5)   ;F22D4C3A1234
  370.  ftst.x fp7         ;F2001C3A
  371.  fnop               ;F2800000
  372.  frestore $1234(a5) ;F36D1234
  373.  fsave $1234(a5)    ;F32D1234
  374.  fbeq.w *+10        ;F2810008
  375.  fbeq *+10          ;F2810008
  376.  fbeq.l *+70000     ;F2C10001116E   (see comments at start!!!)
  377.  fbf *+10           ;F2800008
  378.  fbge *+10          ;F2930008
  379.  fbgl *+10          ;F2960008
  380.  fbgle *+10         ;F2970008
  381.  fbgt *+10          ;F2920008
  382.  fble *+10          ;F2950008
  383.  fblt *+10          ;F2940008
  384.  fbne *+10          ;F28E0008
  385.  fbnge *+10         ;F29C0008
  386.  fbngl *+10         ;F2990008
  387.  fbngle *+10        ;F2980008
  388.  fbngt *+10         ;F29D0008
  389.  fbnle *+10         ;F29A0008
  390.  fbnlt *+10         ;F29B0008
  391.  fboge *+10         ;F2830008
  392.  fbogl *+10         ;F2860008
  393.  fbogt *+10         ;F2820008
  394.  fbole *+10         ;F2850008
  395.  fbolt *+10         ;F2840008
  396.  fbor *+10          ;F2870008
  397.  fbseq *+10         ;F2910008
  398.  fbsf *+10          ;F2900008
  399.  fbsne *+10         ;F29E0008
  400.  fbst *+10          ;F29F0008
  401.  fbt *+10           ;F28F0008
  402.  fbueq *+10         ;F2890008
  403.  fbuge *+10         ;F28B0008
  404.  fbugt *+10         ;F28A0008
  405.  fbule *+10         ;F28D0008
  406.  fbult *+10         ;F28C0008
  407.  fbun *+10          ;F2880008
  408.  fdbeq d0,*+10      ;F24800010006
  409.  fdbeq d7,*+10      ;F24F00010006
  410.  fdbne d1,*+10      ;F249000E0006
  411.  fdbgt d1,*+10      ;F24900120006
  412.  fdbngt d1,*+10     ;F249001D0006
  413.  fdbge d1,*+10      ;F24900130006
  414.  fdbnge d1,*+10     ;F249001C0006
  415.  fdblt d1,*+10      ;F24900140006
  416.  fdbnlt d1,*+10     ;F249001B0006
  417.  fdble d1,*+10      ;F24900150006
  418.  fdbnle d1,*+10     ;F249001A0006
  419.  fdbgl d1,*+10      ;F24900160006
  420.  fdbngl d1,*+10     ;F24900190006
  421.  fdbgle d1,*+10     ;F24900170006
  422.  fdbngle d1,*+10    ;F24900180006
  423.  fdbeq d1,*+10      ;F24900010006
  424.  fdbne d1,*+10      ;F249000E0006
  425.  fdbogt d1,*+10     ;F24900020006
  426.  fdbule d1,*+10     ;F249000D0006
  427.  fdboge d1,*+10     ;F24900030006
  428.  fdbult d1,*+10     ;F249000C0006
  429.  fdbolt d1,*+10     ;F24900040006
  430.  fdbuge d1,*+10     ;F249000B0006
  431.  fdbole d1,*+10     ;F24900050006
  432.  fdbugt d1,*+10     ;F249000A0006
  433.  fdbogl d1,*+10     ;F24900060006
  434.  fdbueq d1,*+10     ;F24900090006
  435.  fdbor d1,*+10      ;F24900070006
  436.  fdbun d1,*+10      ;F24900080006
  437.  fdbf d1,*+10       ;F24900000006
  438.  fdbt d1,*+10       ;F249000F0006
  439.  fdbsf d1,*+10      ;F24900100006
  440.  fdbst d1,*+10      ;F249001F0006
  441.  fdbseq d1,*+10     ;F24900110006
  442.  fdbsne d1,*+10     ;F249001E0006
  443.  fseq $1234(a5)     ;F26D00011234
  444.  fsne $4321(a3)     ;F26B000E4321
  445.  fsgt (a1)          ;F2510012
  446.  fsngt (a1)         ;F251001D
  447.  fsge (a1)          ;F2510013
  448.  fsnge (a1)         ;F251001C
  449.  fslt (a1)          ;F2510014
  450.  fsnlt (a1)         ;F251001B
  451.  fsle (a1)          ;F2510015
  452.  fsnle (a1)         ;F251001A
  453.  fsgl (a1)          ;F2510016
  454.  fsngl (a1)         ;F2510019
  455.  fsgle (a1)         ;F2510017
  456.  fsngle (a1)        ;F2510018
  457.  fseq (a1)          ;F2510001
  458.  fsne (a1)          ;F251000E
  459.  fsogt (a1)         ;F2510002
  460.  fsule (a1)         ;F251000D
  461.  fsoge (a1)         ;F2510003
  462.  fsult (a1)         ;F251000C
  463.  fsolt (a1)         ;F2510004
  464.  fsuge (a1)         ;F251000B
  465.  fsole (a1)         ;F2510005
  466.  fsugt (a1)         ;F251000A
  467.  fsogl (a1)         ;F2510006
  468.  fsueq (a1)         ;F2510009
  469.  fsor (a1)          ;F2510007
  470.  fsun (a1)          ;F2510008
  471.  fsf (a1)           ;F2510000
  472.  fst (a1)           ;F251000F
  473.  fssf (a1)          ;F2510010
  474.  fsst (a1)          ;F251001F
  475.  fseq (a1)          ;F2510001
  476.  fsne (a1)          ;F251000E
  477.  ftrapeq.w #$1234   ;F27A00011234
  478.  ftrapne.l #$12345678 ;F27B000E12345678
  479.  ftrapogt           ;F27C0002
  480.  ftrapule           ;F27C000D
  481.  ftrapoge           ;F27C0003
  482.  ftrapult           ;F27C000C
  483.  ftrapolt           ;F27C0004
  484.  ftrapule           ;F27C000D
  485.  ftrapole           ;F27C0005
  486.  ftrapugt           ;F27C000A
  487.  ftrapogl           ;F27C0006
  488.  ftrapueq           ;F27C0009
  489.  ftrapor            ;F27C0007
  490.  ftrapun            ;F27C0008
  491.  ftrapf             ;F27C0000
  492.  ftrapt             ;F27C000F
  493.  ftrapsf            ;F27C0010
  494.  ftrapst            ;F27C001F
  495.  ftrapseq           ;F27C0011
  496.  ftrapsne           ;F27C001E
  497.  fnop               ;F2800000
  498.  frestore $1234(a5) ;F36D1234
  499.  frestore (a3)+     ;F35B
  500.  fsave -(a3)        ;F323
  501.  ftst.b (a3)        ;F213583A
  502.  ftst.p (a3)        ;F2134C3A
  503.  ftst.l $1234(a7)   ;F22F403A1234
  504.  ftst.x fp2         ;F200083A
  505.  
  506. * syntax 46
  507.  nbcd $1234(a5)    ;482D1234
  508.  tas $12(A1,A3.w)  ;4AF1B012
  509.  
  510. * syntax 47
  511.  scc d0  ;54C0
  512.  scs d1  ;55C1
  513.  seq d2  ;57C2
  514.  sf d3   ;51C3
  515.  sge d4  ;5CC4
  516.  sgt d5  ;5EC5
  517.  shi d6  ;52C6
  518.  sle d7  ;5FC7
  519.  sls d0  ;53C0
  520.  slt d1  ;5DC1
  521.  smi d2  ;5BC2
  522.  sne d3  ;56C3
  523.  spl d4  ;5AC4
  524.  st d5   ;50C5
  525.  svc d6  ;58C6
  526.  svs d7  ;59C7
  527.  
  528. * syntax 48
  529.  lea $1234(a5),A3  ;47ED1234
  530.  
  531. * syntax 49
  532.  link.w a2,#-20    ;4E52FFEC
  533.  link.l a3,#-70000 ;480BFFFEEE90
  534.  
  535. * syntax 54
  536.  movec a0,sfc  ;4E7B8000
  537.  movec a7,dfc  ;4E7BF001
  538.  movec d0,cacr ;4E7B0002
  539.  movec d7,usp  ;4E7B7800
  540.  movec a1,vbr  ;4E7B9801
  541.  movec a2,caar ;4E7BA802
  542.  movec d1,msp  ;4E7B1803
  543.  movec d2,isp  ;4E7B2804
  544.  movec sfc,a0  ;4E7A8000
  545.  movec dfc,a7  ;4E7AF001
  546.  movec cacr,d0 ;4E7A0002
  547.  movec usp,d7  ;4E7A7800
  548.  movec vbr,a1  ;4E7A9801
  549.  movec caar,a2 ;4E7AA802
  550.  movec msp,d1  ;4E7A1803
  551.  movec isp,d2  ;4E7A2804
  552.  
  553. * syntax 55
  554.  movem.w a0-a2/d1,-(a7) ;48A740E0
  555.  movem.l a0,-(a7)       ;48E70080
  556.  movem.l (a7)+,d3       ;4CDF0008
  557.  movem.w (a7)+,d0-d7/a0-a6 ;4C9F7FFF
  558.  
  559. * syntax 56
  560.  movep d3,4(a5)  ;078D0004
  561.  movep 4(a5),d6  ;0D0D0004
  562.  
  563. * syntax 57
  564.  moveq #$12,d0   ;7012
  565.  moveq #$7F,d7   ;7E7F
  566.  
  567. * syntax 58
  568.  moves.b a3,$1234(a5)    ;0E2DB8001234
  569.  moves.w $1234(a5),a3    ;0E6DB0001234
  570.  moves.l (a7)+,d1        ;0E9F1000
  571.  moves.l d2,-(a7)        ;0EA72800
  572.  
  573. * syntax 59
  574.  muls.w #$1234,D3        ;C7FC1234
  575.  muls.l (a3),d4          ;4C134804
  576.  muls.l (a4),d5:d6       ;4C146C05
  577.  mulu.w $1234(a1),d2     ;C4E91234
  578.  mulu.l d2,d3            ;4C023003
  579.  mulu.l $4321(a1),d4:d5  ;4C2954044321
  580.  
  581. * syntax 60
  582.  trapeq                  ;57FC
  583.  trapeq.w #$1234         ;57FA1234
  584.  trapeq.l #$12345678     ;57FB12345678
  585.  
  586. * syntax 61
  587.  trap #15        ;4E4F
  588.  trap #0         ;4E40
  589.  
  590. * syntax 62
  591.  pack -(a3),-(a5),#0 ;8B4B0000
  592.  pack d3,d4,#-1  ;8943FFFF
  593.  
  594. * syntax 63
  595.  pea (a3)        ;4853
  596.  pea $1234(a5)   ;486D1234
  597.  jmp $1234(a5)     ;4EED1234
  598.  jsr $12(A3,D4.L)  ;4EB34812
  599.  
  600. * syntax 64
  601.  pflush #7,#7    ;F00030F7
  602.  pflush #7,#0    ;F0003017
  603.  pflush #0,#7    ;F00030F0
  604.  pflush #0,#0    ;F0003010
  605.  pflush d0,#7    ;F00030E8
  606.  pflush d7,#7    ;F00030EF
  607.  pflush sfc,#7   ;F00030E0
  608.  pflush dfc,#7   ;F00030E1
  609.  pflush d0,#7,(a3)      ;F01338E8
  610.  pflush d0,#7,$1234(a3) ;F02B38E81234
  611.  
  612. * syntax 65
  613.  pflusha         ;F0002400
  614.  
  615. * syntax 66
  616.  ploadr #0,(a0)  ;F0102210
  617.  ploadr #0,(a7)  ;F0172210
  618.  ploadr #7,(a0)  ;F0102217
  619.  ploadr d0,(a0)  ;F0102208
  620.  ploadr d7,(a0)  ;F010220F
  621.  ploadr sfc,(a0) ;F0102200
  622.  ploadr dfc,(a0) ;F0102201
  623.  ploadr #7,$1234(a0) ;F02822171234
  624.  
  625. * syntax 67
  626.  ploadw #0,(a0)  ;F0102010
  627.  ploadw #0,(a7)  ;F0172010
  628.  ploadw #7,(a0)  ;F0102017
  629.  ploadw d0,(a0)  ;F0102008
  630.  ploadw d7,(a0)  ;F010200F
  631.  ploadw dfc,(a0) ;F0102001
  632.  ploadw #7,$1234(a0) ;F02820171234
  633.  
  634. * syntax 68
  635.  pmove.d crp,(a0)    ;F0104E00
  636.  pmove.d srp,(a0)    ;F0104A00
  637.  pmove.l tc,(a0)     ;F0104200
  638.  pmove.l tt0,(a0)    ;F0100A00
  639.  pmove.l tt1,(a0)    ;F0100E00
  640.  pmove.w mmusr,(a0)  ;F0106200
  641.  pmove.d (a0),crp    ;F0104C00
  642.  pmove.d (a0),srp    ;F0104800
  643.  pmove.l (a0),tc     ;F0104000
  644.  pmove.l (a0),tt0    ;F0100800
  645.  pmove.l (a0),tt1    ;F0100C00
  646.  pmove.w (a0),mmusr  ;F0106000
  647.  
  648. * syntax 69 (Devpac bug - allows PMOVEFD with MMUSR)
  649.  pmovefd.d (a0),crp  ;F0104D00
  650.  pmovefd.d (a0),srp  ;F0104900
  651.  pmovefd.l (a0),tc   ;F0104100
  652.  pmovefd.l (a0),tt0  ;F0100900
  653.  pmovefd.l (a0),tt1  ;F0100D00
  654.  
  655. * syntax 70,71
  656.  ptestr #0,(a5),#7   ;F0159E10
  657.  ptestr #7,(a5),#7   ;F0159E17
  658.  ptestr #0,(a5),#0   ;F0158210
  659.  ptestr #7,(a5),#0   ;F0158217
  660.  ptestr #7,$1234(a5),#0 ;F02D82171234
  661.  ptestr #0,(a5),#7,a0 ;F0159F10
  662.  ptestr #0,(a5),#7,a7 ;F0159FF0
  663.  ptestw #0,(a5),#7   ;F0159C10
  664.  ptestw #7,(a5),#0   ;F0158017
  665.  ptestw #7,$1234(a5),#7       ;F02D9C171234
  666.  ptestw #7,$1234(a5),#6,a0    ;F02D99171234
  667.  ptestw #7,$43(a3,d1.l),#1,a6 ;F03385D71843
  668.  
  669. * syntax 72
  670.  rtd #$1234                   ;4E741234
  671.  stop #$4321                  ;4E724321
  672.  
  673. * syntax 73
  674.  swap D3                      ;4843
  675.  
  676. * syntax 74
  677.  tst.b D3                     ;4A03
  678.  tst.w (a2)+                  ;4A5A
  679.  tst.l $1234(a5)              ;4AAD1234
  680.  
  681. * syntax 75
  682.  unlk A3                      ;4E5B
  683.  
  684. * miscellaneous pseudo ops
  685.  
  686. * test macro assembly
  687.  
  688. fred: macro    ;test \0 assembly
  689.  move.\0 \1,\2 ;}should assemble
  690.  move.l \1,\2  ;}same as each other
  691.  endm
  692.  
  693.  fred.l $1234,$4321
  694.  rts
  695.  
  696. free: macro    ;test \@ assembly
  697.  moveq #20,d0
  698.  moveq #0,d1
  699. L\@:
  700.  addq.w #1,d1
  701.  dbra d0,L\@   ;s/be same as dbra d0,jim below
  702.  nop
  703.  endm
  704.  free
  705.  moveq #20,d0
  706.  moveq #0,d1
  707. jim:
  708.  addq.w #1,d1
  709.  dbra d0,jim
  710.  rts
  711.  
  712. * test IFcc statements         Yes 0
  713.  moveq #1,d0 ;                 Yes 1
  714.  ifeq 0      ;#1               Yes
  715.  moveq #2,d0 ;true 1 (level 1) Yes 2
  716.  endc        ;#1               Yes
  717.  ifne 0      ;#2               } should
  718.  moveq #3,d0 ;false (level 1)  } not be
  719.  endc        ;#2               } in mc
  720.  moveq #4,d0 ;                 Yes 3
  721.  ifne 1      ;#3>1             Yes
  722.  moveq #5,d0 ;true 2 (level 1) Yes 4
  723.  ifgt -1     ;#4>2             }
  724.  moveq #6,d0 ;false (level 2)  } should
  725.  ifeq 0      ;#5>3             } not be
  726.  moveq #7,d0 ;false (level 3)  } in mc
  727.  endc        ;#5>2             }
  728.  endc        ;#4>1             }
  729.  iflt -1     ;#6>2             Yes
  730.  moveq #7,d0 ;true 3 (level 2) Yes 5
  731.  endc        ;#6>1             Yes
  732.  endc        ;#3>0             Yes
  733.  moveq #8,d0 ;                 Yes 6
  734.  rts         ;                 Yes 7
  735.  
  736. * test endcc with mexit
  737. frex: macro
  738.  moveq #0,d0
  739.  ifne 0       ;#1>1  }should
  740.  mexit        ;false }not be
  741.  endc         ;#1>0  }in list
  742.  moveq #1,d0
  743.  ifeq 0       ;#2>1
  744.  mexit        ;true
  745.  endc         ;#2>0
  746.  moveq #3,d0
  747.  endm
  748.  nop
  749.  frex
  750.  nop
  751.  rts
  752.  
  753. * Test INCLUDE
  754.  
  755.  include 'incall.i'
  756.  rts
  757.  
  758. * test DS and DC
  759.  bra.s harry
  760.  dc.b 'abcd'
  761. frey:
  762.  ds.b 1
  763.  ds.w 0               ;(should normalise)
  764.  dc.b 1,2,'abcd',3*4
  765.  dc.w $1234,$4321     ;(should normalise)
  766.  dc.l frey,harry,$12345678
  767. harry:
  768.  rts
  769.  
  770. * test EQUR
  771. jack: equr d4
  772. bill: equr a7
  773. john: equr jack
  774.  
  775.  moveq #0,d4      ;} these 3
  776.  moveq #0,jack    ;} s/be
  777.  moveq #0,john    ;} same
  778.  move.l d0,-(a7)    ;}  these 2
  779.  move.l d0,-(bill)  ;}  s/be same
  780.  
  781. * test REG
  782. hugh: reg d0-d1/a1-a3
  783. jane: reg hugh
  784.  
  785.  movem.l d0-d1/a1-a3,-(a7) ;next 3 s/be same
  786.  movem.l hugh,-(a7)
  787.  movem.l jane,-(a7)
  788.  movem.l (a7)+,d0-d1/a1-a3 ;next 3 s/be same
  789.  movem.l (a7)+,hugh
  790.  movem.l (a7)+,jane
  791.  
  792. joan: reg d1-jack/bill/a2-a3
  793.  
  794.  movem.l d1-d4/a7/a2-a3,-(a4) ;next 2 s/be same
  795.  movem.l joan,-(a4)
  796.  
  797. * try local labels
  798. bilp:
  799. .bill:
  800. 12$: moveq #20,d0
  801.  bra 12$
  802.  bra .bill
  803. frez:
  804. .jack:
  805. 12$: moveq #20,d0
  806.  bra 12$
  807.  bra .jack
  808.  
  809. * test selection of .W/.L for addr mode 15,16
  810.  nop
  811. frew: equ $12345678
  812. bilq: equ $1234
  813. jacl:
  814.  
  815.  move.l $4,d0
  816.  move.l frew,d0
  817.  move.l bilq,d0
  818.  move.l jacl,d0
  819.  move.l $4.W,d0
  820.  move.l $4.L,d0
  821.  rts
  822.  
  823. * forward references in expressions
  824.  move.l #frad,d0    ;203C12345678
  825.  move.l #jpan,d0    ;203C00000014
  826.  move.w #jock,d0    ;303C1234
  827.  move.b #jill,d0    ;103C0012
  828. jpan:
  829.  rts                ;4E75
  830.  
  831. frad: equ $12345678
  832. jock: equ $1234
  833. jill: equ $12
  834.  
  835. * forward references in bra relative
  836.  dbra d0,jpan    ;51C8FFFC
  837.  bra jpan        ;60F8
  838.  bra.s sue       ;6016
  839.  bra.w sue       ;60000014
  840.  bra.l sue       ;60FF00000010
  841.  bsr.s sue       ;610A
  842.  bsr sue         ;61000008
  843.  dbra d0,sue     ;51C80004
  844.  nop             ;4E71
  845. sue:
  846.  
  847. * SET items in expressions with fwd refs
  848. ken: set 1
  849.  move.l #ken+jvhn,d0 ;203C00000004
  850. ken: set 2
  851.  move.l #ken+jvhn,d0 ;203C00000005
  852.  nop                 ;4E71
  853. jvhn: equ 3
  854.  
  855. * doll in expressions with fwd refs
  856.  move.l #june-*,d0   ;203C00000008
  857.  nop                 ;4E71
  858. june:
  859.